const fs = require('fs');
const g = require('gulp');
const $ = require('gulp-load-plugins')();
const bowerFiles = require('bower-files');
const u = require('./gulp.util');
const cfg = require('./config');

g.task('copy.etc', () => u.copyNew(
    `${cfg.src.etc.dir}/*.*`,
    cfg.bin.dir,
    {base: cfg.src.dir}
));

g.task('copy.bin', () => u.copyNew(
    `${cfg.src.dir}/*.*`,
    cfg.bin.dir,
    {base: cfg.src.dir}
));

g.task('copy.res', () => u.copyNew(
    u.dir(cfg.src.res.dir),
    cfg.bin.web.dir,
    {base: cfg.src.res.dir}
));

g.task('copy.all', ['copy.etc', 'copy.bin', 'copy.res']);

g.task('bower', () => u.copyNew(bowerFiles().files, cfg.bin.web.dir));

// 确定不在运行期的模块目录
function modir(module) {
    let dir = `node_modules/${module}`;
    if (!fs.existsSync(dir)) {
        dir = `../../${dir}`;
    }
    return dir;
}

// 复制ant.design的css
g.task('copy.antd', () => {
    const antd_dir = modir('antd');
    return u.src(antd_dir + '/dist/antd.css')
        .pipe($.rename('vendor.css'))
        .pipe($.newer(cfg.bin.web.dir))
        .pipe(g.dest(cfg.bin.web.dir));
});

// 复制font-awesome文件
g.task('copy.font', (done) => {
    const font_dir = modir('font-awesome');
    u.src(font_dir + '/css/font-awesome.css')
        .pipe($.rename('fonts.css'))
        .pipe($.newer(cfg.bin.web.dir))
        .pipe(g.dest(cfg.bin.web.dir));
    u.src(font_dir + '/fonts/*')
        .pipe($.rename(f => {
            f.dirname = 'fonts';
        }))
        .pipe($.newer(cfg.bin.web.dir))
        .pipe(g.dest(cfg.bin.web.dir));
    done();
});

g.task('copy.3rd', ['copy.antd', 'copy.font']);
